]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
boxpointer: If available, use source actor for constraining
authorJonas Ådahl <jadahl@gmail.com>
Mon, 4 Sep 2017 06:37:45 +0000 (14:37 +0800)
committerJonas Ådahl <jadahl@gmail.com>
Mon, 4 Sep 2017 08:28:58 +0000 (16:28 +0800)
If a source actor is set, use that for determining the arrow side (i.e.
whether the BoxPointer widget should expand in a certain direction).
This is better because it ensures that the popup is displayed on the
same monitor as the widget it originates from.

Without this, entering text with a vertically aligned input method
close to the bottom of a monitor would expand the BoxPointer downwards
on the monitor beneath it, instead of upwards, which is what one would
expect.

https://bugzilla.gnome.org/show_bug.cgi?id=786886

js/ui/boxpointer.js

index 091ae157f8863b6c5815ad19fe74414c5eb66f25..4527b4d9c89a93953173336134768d83e12a3032 100644 (file)
@@ -587,7 +587,10 @@ var BoxPointer = new Lang.Class({
     _calculateArrowSide: function(arrowSide) {
         let sourceAllocation = Shell.util_get_transformed_allocation(this._sourceActor);
         let [minWidth, minHeight, boxWidth, boxHeight] = this._container.get_preferred_size();
-        let monitor = Main.layoutManager.findMonitorForActor(this.actor);
+        let monitorActor = this.sourceActor;
+        if (!monitorActor)
+            monitorActor = this.actor;
+        let monitor = Main.layoutManager.findMonitorForActor(monitorActor);
 
         switch (arrowSide) {
         case St.Side.TOP: